home *** CD-ROM | disk | FTP | other *** search
- {
- JAMES SAITO
-
- > I wonder if I can allocate With GetMem more than 64K, though. You see, I'm
- > interested in creating games With my own code, and the most important part
- > of games is Graphics. You don't want to play some dumb monochrome Text
- > adventure With a little man (@). :) Do you have any tips For outputting a
- > screen of information such as a part of a dungeon? I'd sorta like to keep
- > the Character centered like in Nintendo games.
-
- Well. if you want to make a 320x200x256 game, I know the right stuff. if you
- would like to make the Character centered, and when you press
- up/down/left/right, the whole screen scrolls. Here is an example on a playing
- field that is umm. Let's say 1000x200 (200K).
- }
- Var
- Field : Array [0..199] of Pointer; {The Field}
- P : Pointer; {I'll tell you what happens With this}
- Count,
- Count2 : Integer;
-
- begin
- {Init The Graphics}
- Asm
- MOV AH,00H {AH = 0}
- MOV AL,13H {AL = 13H,which is the Graphics mode 320x200x256}
- INT 10H {Call the Graphics bios services}
- end;
-
- if Mem[$40:$49] <> $13 Then
- begin
- WriteLn('VGA Graphics Required For this game');
- Halt(1);
- end;
-
- For Count := 0 to 199 do
- begin
- getmem(field[count],1000); {Find a chunk of memory For the field}
- For count2 := 0 to 999 do
- mem[seg(field[count]^) : ofs(field[count]^)] := random(256);
- {Create a random field}
- end;
- getmem(p, 64000);
- For Count2 := 0 to 679 do
- begin
- For count := 0 to 199 do
- Move(mem[seg(field[count]^) : ofs(field[count]^) + Count2],
- mem[seg(p^) : ofs(p^) + count * 320], 320);
- {Now do put your player on, supposing it's a white block}
- For count := 90 to 110 do
- FillChar(mem[seg(p^) : ofs(p^) + count * 320 + 150], 20, 15);
- move (p^, mem[$A000 : 0], 64000);
- {Now copy that workspace into the video memory}
- end;
-
- {Now time to close the Graphics}
- Asm
- MOV AH,$00;
- MOV AL,$03;
- INT 10H
- end;
-
- {Free all blocks}
- For Count := 0 to 199 do
- freemem(field[count], 320);
- freemem(p, 64000);
- end.
- {
- Well. That's it. It actually took me 20 minutes to Type this whole thing
- right in the message base. I guess there's a bit of errors. - James Saito
- }